home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / BASIC / 0006.ZIP / POKEPEEK.TXT < prev    next >
Text File  |  1984-03-11  |  7KB  |  210 lines

  1. 03/03/84
  2.         COMMONLY USED BASIC PEEKS, POKES AND SUBROUTINES
  3.  
  4.     DUE TO THE LACK OF A COMPREHENSIVE, PUBLISHED DIRECTORY OF COMMONLY USED
  5.     POKES, PEEKS AND SUBROUTINES THIS LIST HAS BEEN COMPILED BY THE SMUG
  6.     PROSIG AS WELL AS A MANY OTHER HARDWORKING PD SOURCES. THANKS AND A TIP
  7.     OF THE HAT TO ALL CONTRIBUTORS! ADDITIONS TO THE LIST ARE ENCOURAGED AND
  8.     SHOULD BE ADDRESS TO:
  9.  
  10.          DON WATKINS, CIS IBMSIG 76003,252
  11.  
  12.     THERE ARE, OF COURSE NO WARRENTIES OR GUARENTEES THAT ANY OF STUFF WORKS
  13.     AND FURTHERMORE, IF IT BLOWS UP YOUR MACHINE IT AIN'T MY FAULT.
  14.     ------------------------------------------------------------------------
  15.  
  16.     BY SPECIFYING A DEF SEG=&H40 IN ANY BASIC PROGRAM, IT IS POSSIBLE TO
  17.     REFERENCE THE FOLLOWING VECTORS (FIELDS) IN THE ROM BIOS AREA BY USING A
  18.     PEEK FUNCTION AND THE FOLLOWING OFFSETS FROM THE CURRENT SEGMENT AS
  19.     DEFINED BY THE DEF SEG STATEMENT.
  20.  
  21.  
  22.      &H0       -  RS232 ADDRESSES ON YOUR IBM PC.
  23.           THIS WILL ALLOW YOU TO TELL HOW MANY (UP TO
  24.           FOUR) ASYNC CARDS ARE ATTACHED, IF ANY.
  25.      &H8       -  PRINTER ADDRESSES ON YOUR IBM PC.
  26.           THIS WILL TELL YOU WHAT PRINTER ADDRESSES,
  27.           AND HOW MANY (UP TO FOUR) EXIST. EACH IS
  28.           ADDRESSED BY A TWO BYTE HEX VALUE.
  29.      &H10      -  EQUIPMENT FLAG.
  30.           THIS FIELD DESCRIBES THE SETTING OF THE
  31.           OPTIONS SWITCHES. IT DESCRIBES WHAT OPTIONAL
  32.           DEVICES ARE ATTACHED TO THE SYSTEM. THE
  33.           FOLLOWING LISTS THE BIT-SIGNIFICANCE OF THIS
  34.           FIELD:
  35.           BIT 0 - INDICATES THAT THERE ARE DISKETTE
  36.               DRIVES ON THE SYSTEM.
  37.           BIT 1 - NOT USED.
  38.           BIT 2,3 - PLANAR RAM SIZE (00=16K 10=32K 01=48K
  39.                 11=64K)
  40.           BIT 4,5 - INITIAL VIDEO MODE (00=UNUSED
  41.                         10=40X25 COLOR
  42.                         01=80X25 COLOR
  43.                         11=80X25 MONO)
  44.           BIT 6,7 - NUMBER OF DISKETTE DRIVES (00=1 10=2
  45.                 01=3 11=4) ONLY IF BIT 0 = 1.
  46.           BIT 8   - UNUSED
  47.           BIT 9,10,11 - NUMBER OF RS232 CARDS ATTACHED
  48.           BIT 12  - GAME I/O ATTACHED
  49.           BIT 13  - NOT USED
  50.           BIT 14,15   - NUMBER OF PRINTERS ATTACHED
  51.      &H13      -  MEMORY SIZE IN K BYTES.
  52.      &H15      -  I/O RAM SIZE IN K BYTES.
  53.      &H17      -  KEYBOARD FLAG -- THE FOLLOWING LISTS THE MASKS
  54.           SET TO DESCRIBE CURRENT KEYBOARD STATUS:
  55.           BYTE 1;
  56.           &H80 - INSERT STATE ACTIVE
  57.           &H40 - CAPS LOCK STATE HAS BEEN TOGGLED
  58.           &H20 - NUM LOCK STATE HAS BEEN TOGGLED
  59.           &H10 - SCROLL LOCK STATE HAS BEEN TOGGLED
  60.           &H08 - ALTERNATE SHIFT KEY DEPRESSED
  61.           &H04 - CONTROL SHIFT KEY DEPRESSED
  62.           &H02 - LEFT SHIFT KEY DEPRESSED
  63.           &H01 - RIGHT SHIFT KEY DEPRESSED
  64.           BYTE 2;
  65.           &H80 - INSERT KEY IS DEPRESSED
  66.           &H40 - CAPS LOCK KEY IS DEPRESSED
  67.           &H20 - NUM LOCK KEY IS DEPRESSED
  68.           &H10 - SCROLL LOCK KEY IS DEPRESSED
  69.           &H08 - SUSPEND KEY HAS BEEN TOGGLED
  70.      &H49      -  CURRENT CRT MODE
  71.           &H00 - 40X25 BW
  72.           &H01 - 40X25 COLOR
  73.           &H02 - 80X25 BW
  74.           &H03 - 80X25 COLOR
  75.           &H04 - 320X200 COLOR
  76.           &H05 - 320X200 BW
  77.           &H06 - 640X200 BW
  78.           &H07 - 80X25 B&W CARD -- SPECIALIZED USE, USED
  79.              INTERNAL TO THE VIDEO ROUTINES.
  80.      &H4A      -  NUMBER OF CRT COLUMNS
  81.      &H50      -  CURSOR POSITION (ONE OF EIGHT)
  82.      &H60      -  CURRENT CURSOR MODE
  83.      &H6C      -  LOW WORD OF TIMER COUNT
  84.      &H6E      -  HIGH WORD OF TIMER COUNT
  85.      &H71      -  &H07 - BREAK KEY DEPRESSED
  86.      &HFA6E    -  BEGINNING OF CHARACTER REGEN MEMORY
  87.      &HFF53    -  PRTSC ROUTINE ADDRESS
  88.  
  89.     ------------------------------------------------------------------
  90.     REAL STUFF--
  91.  
  92.     TOGGLE NUM LOCK
  93.      DEG SEG = &H40 : POKE &H17, PEEK(&H17) OR 32   'TO TURN ON
  94.      DEG SEG = &H40 : POKE &H17, PEEK(&H17) AND 223 'TO TURN OFF
  95.  
  96.     TOGGLE CAPS LOCK
  97.      DEG SEG = &H40 : POKE &H17, PEEK(&H17) OR 64   'TO TURN ON
  98.      DEG SEG = &H40 : POKE &H17, PEEK(&H17) AND 171 'TO TURN OFF
  99.  
  100.     SET SCROLL WINDOW
  101.      10 DEF SEG : POKE 91,20 : POKE 92,25         'SETS UP WINDOW ON LINE
  102.      20 LOCATE X,20                     'FORCE CURSOR TO WINDOW
  103.  
  104.     SET WINDOW WIDTH
  105.      DEF SEG : POKE 41,30                'SETS WINDOW WIDTH TO 30
  106.  
  107.     RESTORE FUNCTION KEYS TO DEFAULT
  108.      10 DEF SEG = &HFACE
  109.      20 K = 1
  110.      30 I = 13
  111.      40 T$ = STRING$(13,32): J = 1
  112.      50 T1 = PEEK(I):IF T1 < 0 THEN MID$(T$,J,1) = CHR$(T1):J = J + 1:
  113.     I = I + 1 : GOTO 50
  114.      60 KEY K,LEFT$(T$,J-1):IF K <10 THEN K = K + 1: I = I + 1: GOTO 40 :
  115.     ELSE KEY ON
  116.  
  117.      DETERMINE MONITOR TYPE
  118.       10 DEF SEG = 0
  119.       20 MONITOR.TYPE = PEEK(&H410) AND &H40
  120.       30 IF MONITOR.TYPE = 1 PRINT "40 X 25 COLOR"
  121.       40 IF MONITOR.TYPE = 32 PRINT "80 X 25 COLOR"
  122.       50 IF MONITOR.TYPE = 48 PRINT "MONOCHROME"
  123.  
  124.      DETERMINE AMOUNT OF MEMORY INSTALLED (ONLY WORKS FOR GREATER THAN 48K)
  125.       DEF SEG = 0: MEMORY% = PEEK(&H413)+(256*PEEK(&H414))
  126.  
  127.      OR, PUT ANOTHER WAY:
  128.  
  129.          MEMORY INFO:          DEF SEG=0
  130.  
  131.       ((PEEK(1040) AND 12) + 4 ) * 4     -    MEMORY ON MOTHER-BOARD
  132.       PEEK(1045) + 256 * PEEK(1046)      -    EXPANSION MEMORY (ADD ON)
  133.       PEEK(1043) + 256 * PEEK(1044)      -    TOTAL MEMORY
  134.  
  135.      READ DRIVE SWITCHES
  136.       DEF SEG = 0: NUMBER.OF.DRIVES% = PEEK(&H410) AND &HC0
  137.  
  138.  
  139.       CURRENT DISK INFO:  DEF SEG=64
  140.          DEF SEG=64
  141.          PEEK(69)    -  TRACK
  142.          PEEK(70)    -  HEAD
  143.          PEEK(71)    -  SECTOR
  144.      256^PEEK(72)    -  BYTES PER SECTOR
  145.  
  146.      DETERMINE IF GAME ADAPTER EXISTS
  147.       10 DEF SEG = 0: GAME.ADAPTER% = PEEK(&H411) AND &H10
  148.       20 IF GAME.ADAPTER% = 0 THEN GAME.ADAPTER$ = "NO" ELSE GAME.ADAPTER$
  149.      = "YES --INSTALLED"
  150.  
  151.      KEYBOARD STUFF
  152.      TO DISABLE ENTIRE KEYBOARD:  DEF SEG=64: OUT 97,204
  153.      TO RE-ENABLE KEYBOARD:       DEF SEG=64: OUT 97,76
  154.  
  155.      PRINTER STATUS--- AT LEAST ON EPSON ---
  156.         DEF SEG=64
  157.         A=PEEK(8)+256*PEEK(9)
  158.         B=(INP(A+1) AND 248) XOR 72
  159.         IF (B AND 128)<>128 THEN PRINTER OFF LINE ELSE ON LINE
  160.  
  161.      INITIALIZE PRINTER:           DEF SEG: OUT A+2,8
  162.                        OUT A+2,12
  163.      NOTE:    THE A TO INITIALIZE IS FROM PRINTER STATUS ROUTINE
  164.  
  165.      A SHORT PROGRAM TO DISABLE AND RE-ENABLE CTRL BREAK FOLLOWS.
  166.  
  167.      100 DIM OLD%(4)
  168.      110 DEF SEG=0
  169.      120 ' SAVE THE OLD CONTROL BREAK ADDRESS
  170.      130 FOR I=&H6C TO &H6F
  171.      140   OLD%(I-&H6C)=PEEK(I)
  172.      150 NEXT
  173.      160 ' ESTABLISH NEW CONTROL BREAK ADDRESS  (POINT TO IRET)
  174.      170 POKE &H6C,&H53
  175.      180 POKE &H6D,&HFF
  176.      190 POKE &H6E,&H0
  177.      200 POKE &H6F,&HF0
  178.      210 DEF SEG
  179.      220 ' RESET OLD CONTROL BREAK ADDRESS
  180.      230 DEF SEG=0
  181.      240 FOR I=&H6C TO &H6F
  182.      250   POKE I,OLD%(I-&H6C)
  183.      260 NEXT
  184.  
  185.  
  186.           SAVE AND RESTORE A SCREEN IMAGE
  187.  
  188.      1 DEF SEG = &HB800              'SAVE SCREEN IMAGE...CHANGE FOR
  189.      2 INPUT FILENAME$                 'MONOCHROME.
  190.      3 BSAVE FILENAME$,0,&H4000
  191.      1000 INPUT "FILENAME";FILENAME$         'RESTORE IMAGE
  192.      1010 CLS
  193.      1020 DEF SEG = &HB800             'CHANGE TO &HB000 TO MONO
  194.      1030 BLOAD FILENAME$
  195.  
  196.              NICE TO KNOW
  197.             BASIC UNPROTECT
  198.     ENTER BASICA
  199.     TYPE BSAVE "UN.P",1124,1
  200.     LOAD "MYPROG
  201.     BLOAD "UN.P",1124
  202.     THE PROGRAM CAN NOW BE LISTED, EDITED AND SAVED AS A NORMAL FILE.
  203.  
  204.     THE LIST IS GROWING BUT COULD BE LONGER!  ANY AND ALL ADDITIONS OF
  205.     COMMONLY USED SUBROUTINES AND PEEK/POKE LOCATIONS WILL BE GLADLY ADDED.
  206.     ADDRESS ALL ADDITIONS TO:  DON WATKINS CIS 76003,252 (IBMSIG).  WITH A
  207.     BIT OF YOUR ASSISTANCE THIS DOCUMENT CAN BECOME AN EFFECTIVE TOOL FOR THE
  208.     BASIC PROGRAMMER....  SO CHIP IN.
  209.  
  210.